/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.tarifador.controller;

import br.com.tarifador.dao.TarifadorDao;
import br.com.tarifador.model.Empresa;
import br.com.tarifador.model.PerfilDeAcesso;
import br.com.tarifador.model.Usuario;
import java.util.List;

/**
 *
 * @author charles
 */
public class UserLoginRn {

    private Usuario usuario = new Usuario();
    private TarifadorDao<Usuario> dao;
    private String messagemCount;
    private TarifadorDao<PerfilDeAcesso> perfilDao;

    /**
     * Para salvar o usuario precisamos, salvar o perfil para gerar um id do
     * perfil e atribuilo ao usuario...
     */
    public boolean salvaUsuario(PerfilDeAcesso perfilDeAcesso) {
        boolean savePerfil = false;
        boolean saveUser = false;
        if (usuario != null) {
            dao = new TarifadorDao<Usuario>(Usuario.class);
            //salvando o usuario para criar o id 
            saveUser = dao.saveUsuario(usuario);
        }
        //sucesso ao salvar
        if (saveUser == true) {
            dao = new TarifadorDao<Usuario>(Usuario.class);
            Usuario user = dao.findbyString(usuario.getNome().toUpperCase(), "nome");
            //se for verdadei o usuario salvo no banco 
            if (!user.getNome().equals("") && user.getNome() != null) {
                perfilDao = new TarifadorDao<PerfilDeAcesso>(PerfilDeAcesso.class);
                perfilDeAcesso.setUsuario(user);
                savePerfil = perfilDao.save(perfilDeAcesso);
                countUsuario();
            }
        } else {
            saveUser = false;
        }

        return saveUser;
    }
    
    public boolean  validaSenha (){
      boolean valida = false;
       if ( usuario.getPassword().equals(usuario.getConfirmPassword())){
           valida = true;
       }
      return valida;  
     }
    public boolean updateUsuario(PerfilDeAcesso perfilDeAcesso, Long idUsuario) {
        boolean savePerfil = false;
        boolean saveUser = false;
        if (idUsuario != null) {
            dao = new TarifadorDao<Usuario>(Usuario.class);
            //salvando o osuario para criar o id 
            usuario.setId(idUsuario);
            saveUser = dao.saveUsuario(usuario);
        }
        //sucesso ao salvar
        if (saveUser == true) {
            dao = new TarifadorDao<Usuario>(Usuario.class);
            Usuario user = dao.findbyString(usuario.getNome().toUpperCase(), "nome");
            //se for verdadei o usuario salvo no banco 
            if (!user.getNome().equals("") && user.getNome() != null) {
                perfilDao = new TarifadorDao<PerfilDeAcesso>(PerfilDeAcesso.class);
                perfilDeAcesso.setUsuario(user);
                savePerfil = perfilDao.save(perfilDeAcesso);
                countUsuario();
            }
        } else {
            saveUser = false;
        }

        return saveUser;

    }

    public void limparCampos() {
        this.usuario.setNome("");
        this.usuario.setPassword("");

    }

    public String countUsuario() {
        dao = new TarifadorDao<Usuario>(Usuario.class);
        Long valor = dao.countAllObject();
        return this.messagemCount = valor.toString() + " usuários cadastrados.";
    }

    public List<Empresa> carregaEmpresa() {
        TarifadorDao<Empresa> dao = new TarifadorDao<Empresa>(Empresa.class);
        return dao.listall();
    }

    public boolean deletaUsuario(Long idUsuario) {
        dao = new TarifadorDao<Usuario>(Usuario.class);
        boolean valida = false;
        if (idUsuario != null) {
            usuario.setId(idUsuario);
            valida = dao.delete(usuario);
            countUsuario();
        }
        return valida;
    }

    public List<PerfilDeAcesso> listaDeUsuariosPerfil() {
        perfilDao = new TarifadorDao<PerfilDeAcesso>(PerfilDeAcesso.class);
        List<PerfilDeAcesso> lista = perfilDao.listall();
        return lista;
    }

    public String sobreUsuario() {
        String texto = "Cadastro de usuários que terão acesso ao sistema Idea Tarifa Web..";
        return texto;
    }

    public String getMessagemCount() {
        return messagemCount;
    }

    public void setMessagemCount(String messagemCount) {
        this.messagemCount = messagemCount;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }
}
